/*
(a) 合法，使用引用赋值，实际是对引用所绑定的变量赋值，因此d被赋值为3.14159
(b) 合法，赋值运算符右边是独立的表达式，r1是引用，因此该表达式的值就是r1所绑定的变量i的值，对引用r2赋值，就是对r2所绑定的d对象赋值
(c) 合法
(d) 合法
*/

int main(){
    int i = 0, &r1 = i;
    double d = 0, &r2 = d;
    r2 = 3.14159;
    r2 = r1;
    i  = r2;
    r1 = d;
    return 0;
}